Typically, in order for a software application selected by a user to run on a hardware platform, it is necessary to perform a compile process. The software performance on a certain CPU is estimated through simulation for efficient CPU utilization. In order to accomplish this, if an assembly code targeting the corresponding CPU is received, this code is converted to a Host Assembly-level C code feasible for simulation.
In more detail, the C code to be measured is first compiled into an assembly code by means of a target compiler. Next, a translator translates the compiled assembly code to a C code feasible for simulation. The simulation C code is compiled to a simulation object file using the host compiler. Finally, a simulation file executable in link with other object files generated through the above procedure and libraries for simulation is generated.
The translator converts the assembly code to a main data structure and performs multiple operations centered around the data structure. Such operations include WORD EXPANSION, DEPENDENCY RESOLUTION, SYMBOL EXTRACTION, etc.
The WORD EXPANSION is an operation for expanding/shrinking the corresponding assembly instruction depending on the TARGET CPU. The DEPENDENCY RESOLUTION is an operation for analyzing dependency relationship of H/W resource necessary and inserting time information to execute the assembly instruction. The SYMBOL EXTRACTION is an operation for extracting symbol information such as function name, global variable, static variable, and assembly label to generate a SYMBOL TABLE. The ELEMENTARY SIMULATION MODEL GENERATION, SIMULATION ASSEMBLY, and SIMULATION EXPORT are operations for generating the host simulation C codes by assemble instruction based on the information generated as above.